<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
  <meta charset="utf-8" />
  <meta name="generator" content="pandoc" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
  <meta name="description" content="TR-369 – The User Services Platform:
A standardized protocol to manage, monitor, update, and control
connected devices, IoT endpoints, user services and home networks" />
  <title>BBF – TR-369 – The User Services Platform</title>
  <style>
    code{white-space: pre-wrap;}
    span.smallcaps{font-variant: small-caps;}
    div.columns{display: flex; gap: min(4vw, 1.5em);}
    div.column{flex: auto; overflow-x: auto;}
    div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
    /* The extra [class] is a hack that increases specificity enough to
       override a similar rule in reveal.js */
    ul.task-list[class]{list-style: none;}
    ul.task-list li input[type="checkbox"] {
      font-size: inherit;
      width: 0.8em;
      margin: 0 0.8em 0.2em -1.6em;
      vertical-align: middle;
    }
    .display.math{display: block; text-align: center; margin: 0.5rem auto;}
  </style>
  <link rel="stylesheet" href="bbf.css" />
  <link rel="stylesheet" href="extra.css" />
  <link rel="stylesheet" href="release.css" />
  <!-- Automatic hover links scripts -->
  <script>
  window.addEventListener('DOMContentLoaded', function() {
    var hoverlink = null;

    var elems = document.querySelectorAll('.auto-hoverlink:not(section)');
      for (var i = 0; i < elems.length; i++) {
        var elem = elems[i];

        elem.addEventListener('mouseenter', event => {
          var target = event.target;
          var info_attr = target.attributes.getNamedItem('data-info');
          var anchor_attr = target.attributes.getNamedItem('data-anchor');
          var thing = info_attr ? info_attr.value : target.localName
          /* we check the parent to cover the case where pandoc has moved the
             id from a header to its parent section */
          var anchor = target.id || target.parentElement.id ||
                                    (anchor_attr ? anchor_attr.value : null);

          if (hoverlink) {
            hoverlink.remove();
            hoverlink = null;
          }

          if (!anchor) {
              console.warn('%s %s has no id or data-anchor',
                           thing, target.textContent);
          } else {
            hoverlink = document.createElement('a');
            hoverlink.href = '#' + anchor;
            hoverlink.className = 'hoverlink';
            hoverlink.title = 'Permalink to this ' + thing;
            target.appendChild(hoverlink);
          }
        });

        elem.addEventListener('mouseleave', () => {
          if (hoverlink) {
            setTimeout(function(href) {
              if (hoverlink && hoverlink.href == href) {
                hoverlink.remove();
                hoverlink = null;
              }
            }, 1000, hoverlink.href);
          }
        });
      }
  });
  </script>
  <!-- Automatic hover links styles -->
  <style>
  :root {
      --hoverlink-gap: 0.2em;
      --hoverlink-size: 0.9em;
  }

  .hoverlink {
      text-decoration: none;
  }

  .hoverlink::after {
      position: absolute;
      display: inline-block;
      content: "";
      margin-left: var(--hoverlink-gap);
      width: var(--hoverlink-size);
      height: var(--hoverlink-size);
      background-size: var(--hoverlink-size) var(--hoverlink-size);
      /* https://icon-library.com/images/permalink-icon/permalink-icon-17.jpg
         (resized from 512x512 to 64x64) */
      background-image: url(permalink.png);
  }
  </style>
  <!--[if lt IE 9]>
    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
  <![endif]-->
</head>
<body>
<div class="main-content">
<header id="title-block-header">
<h1 class="title auto-hoverlink" id="title">TR-369 – The User Services
Platform</h1>
<p class="subtitle">Issue: 1 Amendment 3 Corrigendum 1 <span
class="release"></span></p>
<p class="date">Issue Date: October 2023</p>
</header>
<nav id="SIDEBAR" role="doc-toc">
<ul>
<li><a href="#sec:executive-summary" id="toc-sec:executive-summary">USP
Development Resources</a>
<ul>
<li><a href="#sec:bbf-members-only-resources"
id="toc-sec:bbf-members-only-resources">BBF Members only
resources</a></li>
</ul></li>
</ul>
</nav>
<h1 class="unnumbered auto-hoverlink" data-info="header"
id="sec:executive-summary">USP Development Resources</h1>
<p>In addition to the TR-369 specification and data models, a number of
resources are available to those building and deploying USP based
solutions.</p>
<ul>
<li><p><strong><a
href="https://github.com/BroadbandForum/obuspa">OB-USP-Agent</a></strong>
- This is the official Open Broadband project, operated by the Broadband
Forum, for an open- source reference implementation of a USP
Agent.</p></li>
<li><p><strong><a
href="https://www.broadband-forum.org/testing-and-certification-programs/bbf-369-usp-certification">BBF.369
USP Agent Certification Program</a></strong> - Here you can learn how to
get your products tested and listed as certified for use with
USP.</p></li>
<li><p><strong><a href="../specification/usp-record-1-3.proto">USP
Record Protocol Buffers Schema</a></strong> - A direct link to the USP
specification’s protocol buffers schema for USP Records.</p></li>
<li><p><strong><a href="../specification/usp-msg-1-3.proto">USP Message
Protocol Buffers Schema</a></strong> - A direct link to the USP
specification’s protocol buffers schema for USP Messages contained in
USP Records.</p></li>
<li><p><strong><a
href="https://github.com/BroadbandForum/usp/blob/master/api/swagger-usp-controller-v1.yaml">Controller
REST API definition</a></strong> - A direct link to the USP Controller’s
REST API definition, which can also be opened in a Swagger / Open API
viewer or editor (such as <a
href="https://editor.swagger.io">editor.swagger.io</a>).</p></li>
<li><p><strong><a
href="https://github.com/BroadbandForum/usp/tree/master/mtp-proxy">MTP
Proxy</a></strong> - The direct link to the MTP Proxy python code that
is used as a reference implementation for proxying between USP
Controllers and USP Agents that utilize different MTPs.</p></li>
<li><p><strong><a
href="https://github.com/BroadbandForum/cwmp-xml-tools/wiki/Report-Tool">Data
Model Report Tool</a></strong> - The Broadband Forum’s tool for
validating XML used to build CWMP and USP data models and device type
definitions, as well as producing HTML reports of a data model.</p></li>
</ul>
<h2 class="unnumbered auto-hoverlink" data-info="header"
id="sec:bbf-members-only-resources">BBF Members only resources</h2>
<p>The following resources are accessible to Broadband Forum
members:</p>
<ul>
<li><a
href="https://wiki.broadband-forum.org/display/BBF/User+Services+Platform+Project+Stream">USP
Project Wiki</a></li>
<li><a href="https://issues.broadband-forum.org/projects/USP/">USP Jira
Issues</a></li>
<li><a
href="https://code.broadband-forum.org/projects/USP/repos/wt-369/browse">USP
Development Area</a></li>
<li><a href="https://broadband-forum.slack.com/archives/C017V6HCYMN">USP
channel on BBF Slack</a></li>
</ul>
</div>
</body>
</html>
